package org.atlantis.grosbeak.depot;

/**
 * 筛选器，可以对Depot容器中的所有的类型进行筛选。可以一次性拿到所有通过筛选的类型。
 * 
 * @author <a href="mailto:seenoevil.cn@gmail.com">SeeNoEvil</a>
 * 
 */
public interface Boult {

	/**
	 * 筛选判断逻辑。
	 * 
	 * @param type
	 *            需要进行筛选的类型。
	 * @return 是否通过筛选。如果通过则返回true、否则返回false。
	 */
	boolean filter(Class<?> type);

	/**
	 * 在筛选的过程中的回调方法。<br>
	 * 当一个类型通过了筛选后，就会立即执行callback方法。
	 * 
	 * @param type
	 *            需要进行筛选的类型。
	 * @return 结果。
	 */
	Object callback(Class<?> type);
}
